///////////////////////////////////////////////////////////////////////////////
// File:        Util.cc
// Author:      671643387@qq.com
// Description: 
///////////////////////////////////////////////////////////////////////////////

#include <sstream>
#include "Util.hpp"

///////////////////////////////////////////////////////////////////////////////
Tokens StrSplit(const std::string& src, const std::string& sep)
{
    Tokens r;
    std::string s;
    for (std::string::const_iterator i = src.begin(); i != src.end(); ++i)
    {
        if (sep.find(*i) != std::string::npos)
        {
            if (s.length()) { r.push_back(s); }
            s = "";
        }
        else
            s += *i;
    }
    if (s.length()) { r.push_back(s); }
    return r;
}

void HexEncodeByteArray(uint8_t* bytes, uint32_t arrayLen, std::string& result)
{
    std::ostringstream ss;
    for (uint32_t i = 0; i < arrayLen; ++i)
    {
        for (uint8_t j = 0; j < 2; ++j)
        {
            unsigned char nibble = 0x0F & (bytes[i] >> ((1 - j) * 4));
            char encodedNibble;
            if (nibble < 0x0A)
            { encodedNibble = '0' + nibble; }
            else
            { encodedNibble = 'A' + nibble - 0x0A; }
            ss << encodedNibble;
        }
    }
    result = ss.str();
}

///////////////////////////////////////////////////////////////////////////////
TIME_T FromStartup(void)
{
#if defined(__WINDOWS__)
    return GetTickCount();
#elif defined(__LINUX__)
#endif
}